import axios from "axios";
import {getToken, serverUrl} from "./tools";
import NProgress from 'nprogress';
import 'nprogress/nprogress.css';
// 设置axios
const instance = axios.create({
    baseURL: serverUrl,// 请求的基础地址
    timeout: 5000,//请求最大时间
    withCredentials: true,
})
//全局拦截 发起请求之前执行.
instance.interceptors.request.use(
    function (config) {
        //在请求之前执行数据
        // 使用token
        config.headers.token = getToken();//()=>{getToken()};
        //开启loading
        NProgress.start();
        return config;
    },
    function (error) {
        //返回失败的信息
        return Promise.reject(error);
    }
)
// 请求之后执行.
instance.interceptors.response.use(
    // 以2XX 为首的请求状态码,都会触发这个函数
    function (response) {
        //关闭loading
        NProgress.done();
        return response;
    },
    // 在这之外的请求状态,则是会触发其他的函数.
    function (error) {
        NProgress.done();
        return Promise.reject(error);
    }
)

// 封装 axios 数据
/*
* get请求
* url 请求地址
* params 参数
* */
export const get = (url, params) => instance.get(url, {params}).then(res => res.data);
/*
* post 请求
* url 请求地址
* data 请求数据
*
* */
export const post = (url, data) => instance.post(url, data).then(res => res.data);
/*
* put 请求
* url 请求地址
* data 请求数据
*
* */
export const put = (url, data) => instance.put(url, data).then(res => res.data);
/*
* patch 请求
* url 请求地址
* data 请求数据
*
* */
export const patch = (url, data) => instance.patch(url, data).then(res => res.data);
/*
* del 请求
* url 请求地址
* data 请求数据
*
* */
export const del = (url) => instance.delete(url).then(res => res.data);